package com.me.singleton;

/**
 * @author inttom
 * @date 2022/2/13
 *
 * 静态内存类因为JVM,避免了线程不安全(具体查看自行查看)
 * 结论:强烈推荐使用!
 */
public class SingletonTest07 {
    public static void main(String[] args) {
        new Thread(new MyThread5()).start();
        new Thread(new MyThread5()).start();
    }
}

class MyThread5 implements Runnable {

    @Override
    public void run() {
        Singleton7 instance = Singleton7.getInstance();
        System.out.println(Thread.currentThread().getName() + ": " + instance.hashCode());
    }
}

/**
 * 静态内部类方式
 */
class Singleton7 {
    private Singleton7() {
    }

    /**
     * 提供一个静态内部类,该类中有一个静态属性 Singleton
     */
    private static class SingletonInstance {
        private static final Singleton7 INSTANCE = new Singleton7();
    }

    /**
     * 提供一个静态公共方法,直接返回SingletonInstance.INSTANCE
     * @return 实例对象
     */
    public static Singleton7 getInstance() {
        return SingletonInstance.INSTANCE;
    }
}


